
Building Network Distributed
Applications With The XideKit API
Ever since releasing Xideco, I am finding more and more that my physical computing projects are
gravitating towards using a network distributed application approach. Not only does this allow me to
reuse existing modules in the context of a new application, but in many instances I am also able to add
new or expanded functionality to a “live” application without effecting existing modules.
Both ZeroMQ and MessagePack are at the heart of these distributed network application designs. To
help simplify creating a network distributed application, I created XideKit , a base API class, that
encapsulates both ZeroMQ and MessagePack operations. This paper will discuss the details and use of
the XideKit API. Code examples and videos are provided to aid in the discussion.
Why ZeroMQ and MessagePack?
Wide Array of Support
Both ZeroMQ and MessagePack are available for a wide array of languages and operating systems,
allowing for maximum flexibility when designing and deploying applications. Even though XideKit is
Python3 centric, applications written in other languages may be added to a Xidekit network application,
as long as they adhere to the application's messaging protocol. The messaging protocol is specified by
the application designer and is not specified by XideKit.
Provides A Higher Level View of Both System and Data
By using a high level, transparent messaging protocol, seemingly disparate components can
communicate and coexist with each other in a consistent manner. For example, to change the state of a
GPIO output pin, a common protocol message is used, independent of board type. So if a new board
type is added, the board support module will translate this message to its specific GPIO control library,
without affecting the other boards or control driver module (e.g. a GUI).
Components written in other computer languages can be plugged into the network as long as they
implement the control protocol. An example of this is Xideco's ability to use a node.js component to
monitor protocol messages being generated by Python modules.
Allows For Maximum Design Flexibility
Applications may reside on a single computer or across multiple computers without any modifications
to the module's source code.
Components can be added or removed to a “live” system without affecting other components within the
system. Components can be “hot-plugged”.
1 Copyright (c) 2016 Alan Yorinks All Rights Reserved 7 April 2016